package zut.wework.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

import java.util.List;
import java.util.Map;

/**
 * @Author: hanyunfei
 * @Description: Json 工具类
 * @Date: 2017/10/12
 * @Modified By:
 */
public class JsonUtil {
	/**
	 * 对象转Json
	 * @param object
	 * @return 转化后的Json字符串
	 */
	public static String toJson(Object object){
		String string = null;
		try {
			string = JSON.toJSONString(object);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return string;
	}
	
	/**
	 * 普通Json字符串转Map
	 * @param json
	 * @return 转化后的Map
	 */
	public static Map<String, Object> toMap(String json){
		return JSON.parseObject(json, Map.class);
	}

	/**
	 * 微信接口返回Json字符串转Map（考虑版本区别，需判断是否有errcode）
	 * @param json
	 * @return 转化后的Map
	 */
	public static Map<String, Object> WXJsonToMap(String json){
		Map<String, Object> map =  JSON.parseObject(json, Map.class);
		if(!map.containsKey("errcode")){ //如果不存在errcode键，则添加该键
			map.put("errcode", 0);
		}
		return map;
	}

	/**
	 * 将JSON转换成List对象
	 * @param json
	 * @param tClass
	 * @param <T>
	 * @return
	 */
	public static <T>List<T> jsonToList(String json, Class<T> tClass){
		@SuppressWarnings("unchecked")
		List<T> list = JSON.parseObject(json,new TypeReference<List<T>>(){});
		return list;
	}

	public static <T> T toBean(String text, Class<T> clazz) {
		return JSON.parseObject(text, clazz);
	}

	public static <T> List<T> toList(String text, Class<T> clazz) {
		return JSON.parseArray(text, clazz);
	}

	public static void main(String[] args) {

	}
}
